package cn.iocoder.yudao.module.base.dal.mysql.info;

import java.util.*;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.base.dal.dataobject.info.InfoDO;
import cn.iocoder.yudao.module.portal.controller.admin.vo.CataLogDataSetVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.base.controller.admin.info.vo.*;
import org.apache.ibatis.annotations.Param;

/**
 * 基础信息 Mapper
 *
 * @author 芋道源码
 */
@Mapper
public interface InfoMapper extends BaseMapperX<InfoDO> {

//    default PageResult<InfoDO> selectPage(InfoPageReqVO reqVO) {
//        return selectPage(reqVO, new LambdaQueryWrapperX<InfoDO>()
//                .eqIfPresent(InfoDO::getServiceUrl, reqVO.getServiceUrl())
//                .eqIfPresent(InfoDO::getInterfacePath, reqVO.getInterfacePath())
//                .eqIfPresent(InfoDO::getInterfaceType, reqVO.getInterfaceType())
//                .eqIfPresent(InfoDO::getInterfaceMethod, reqVO.getInterfaceMethod())
//                .eqIfPresent(InfoDO::getInterfaceCode, reqVO.getInterfaceCode())
//                .eqIfPresent(InfoDO::getContentType, reqVO.getContentType())
//                .eqIfPresent(InfoDO::getRemark, reqVO.getRemark())
//                .orderByDesc(InfoDO::getId));
//    }

    IPage<InfoDO> selectPagePro(IPage<InfoDO> page,@Param("reqVO") InfoPageReqVO reqVO);

    InfoDO selectByIdPro(Long id);

    InfoDO getInterfaceByCatalogId(Long catalogId);

    List<CataLogDataSetVO> getDataSetById(@Param("catalogId") Long catalogId,@Param("dataSourceId") String dataSourceId);

    void addDataSet(CataLogDataSetVO dataSetVO1);

    void updateDownloadCount(CataLogDataSetVO cataLogDataSetVO);

    String applicationStatus(@Param("portalLoginUserId") Long portalLoginUserId, @Param("catalogId") Long catalogId,@Param("applicationType") String applicationType);

    int getDsCount(@Param("id") Long id);

    int getPortCount(@Param("id") Long id);

    Boolean getIsPort(@Param("id") Long id);

    Integer getCatalogCount();

    Integer getInterfaceCount();

    Integer getApplicationCount();

    Integer getCatalogCollectCount();
}